@import 'tailwindcss' source(none);
@import 'flatpickr/dist/flatpickr.min.css' layer(components);
@import './modal.css' layer(components);
@import './loader.css' layer(components);
@import './tooltip.css' layer(components);
@import './flatpickr-colors.css' layer(components);

@plugin "@tailwindcss/forms";

@source "../css";
@source "../js";
@source "../../lib/plausible_web";
@source "../../extra/lib/plausible_web";

/* Tailwind v3 compatibility: restore v3 default border and ring styling */

@layer base {
  *,
  ::after,
  ::before,
  ::backdrop,
  ::file-selector-button {
    border-color: var(--color-gray-200, currentColor);
  }

  button:not(:disabled),
  [role='button']:not(:disabled) {
    cursor: pointer;
  }

  *:focus-visible {
    @apply ring-2 ring-indigo-500 ring-offset-2 dark:ring-offset-gray-900 outline-none;
  }
}

@layer components {
  /* Replace Tailwind form plugin's focus with focus-visible */
  [type='checkbox']:focus,
  [type='radio']:focus {
    outline: none;
    box-shadow: none;
  }

  [type='checkbox']:focus-visible,
  [type='radio']:focus-visible {
    @apply ring-2 ring-indigo-500 ring-offset-2 outline-none;
  }
}

@theme {
  /* Color aliases from tailwind.config.js */

  /* yellow: colors.amber - Map yellow to amber colors */
  --color-yellow-50: var(--color-amber-50);
  --color-yellow-100: var(--color-amber-100);
  --color-yellow-200: var(--color-amber-200);
  --color-yellow-300: var(--color-amber-300);
  --color-yellow-400: var(--color-amber-400);
  --color-yellow-500: var(--color-amber-500);
  --color-yellow-600: var(--color-amber-600);
  --color-yellow-700: var(--color-amber-700);
  --color-yellow-800: var(--color-amber-800);
  --color-yellow-900: var(--color-amber-900);
  --color-yellow-950: var(--color-amber-950);

  /* green: colors.emerald - Map green to emerald colors */
  --color-green-50: var(--color-emerald-50);
  --color-green-100: var(--color-emerald-100);
  --color-green-200: var(--color-emerald-200);
  --color-green-300: var(--color-emerald-300);
  --color-green-400: var(--color-emerald-400);
  --color-green-500: var(--color-emerald-500);
  --color-green-600: var(--color-emerald-600);
  --color-green-700: var(--color-emerald-700);
  --color-green-800: var(--color-emerald-800);
  --color-green-900: var(--color-emerald-900);
  --color-green-950: var(--color-emerald-950);

  /* gray: colors.zinc - Map gray to zinc colors */
  --color-gray-50: var(--color-zinc-50);
  --color-gray-100: var(--color-zinc-100);
  --color-gray-200: var(--color-zinc-200);
  --color-gray-300: var(--color-zinc-300);
  --color-gray-400: var(--color-zinc-400);
  --color-gray-500: var(--color-zinc-500);
  --color-gray-600: var(--color-zinc-600);
  --color-gray-700: var(--color-zinc-700);
  --color-gray-800: var(--color-zinc-800);
  --color-gray-900: var(--color-zinc-900);
  --color-gray-950: var(--color-zinc-950);

  /* Custom gray shades from config (override some zinc values) */
  --color-gray-150: rgb(236 236 238);
  --color-gray-750: rgb(50 50 54);
  --color-gray-825: rgb(35 35 38);
  --color-gray-850: rgb(34 34 38);

  /* Set v3 default ring behavior */
  --default-ring-width: 2px;
  --default-ring-color: var(--color-indigo-500);
}

@media print {
  canvas {
    width: 100% !important;
    height: auto !important;
  }
}

@utility container {
  margin-inline: auto;
  padding-inline: 1rem;
}

@custom-variant dark (&:where(.dark, .dark *));
@custom-variant phx-click-loading (.phx-click-loading&, .phx-click-loading &);
@custom-variant phx-submit-loading (.phx-submit-loading&, .phx-submit-loading &);
@custom-variant phx-change-loading (.phx-change-loading&, .phx-change-loading &);

[x-cloak] {
  display: none;
}

.button {
  @apply inline-flex justify-center px-3.5 py-2 text-sm font-medium text-white bg-indigo-600 border border-transparent rounded-md leading-5 transition hover:bg-indigo-700;
}

.button[disabled] {
  @apply bg-gray-400 dark:bg-gray-600;
}

.button-outline {
  @apply text-indigo-600 bg-transparent border border-gray-300 dark:border-gray-600 dark:text-gray-100 hover:bg-transparent hover:text-indigo-700 dark:hover:text-white hover:border-gray-400/70 dark:hover:border-gray-500 transition-all duration-150;
}

.button-sm {
  @apply px-4 py-2 text-sm;
}

.button-md {
  @apply px-4 py-2;
}

html {
  @apply text-gray-800;
}

body {
  -webkit-font-smoothing: antialiased;
  -moz-osx-font-smoothing: grayscale;
  width: 100vw; /* Prevents content from jumping when scrollbar is added/removed due to vertical overflow */
  overflow-x: hidden;
}

blockquote {
  @apply px-4 py-2 my-4 border-l-4 border-gray-500;
}

@media (width >= 1280px) {
  .container {
    max-width: 70rem;
  }
}

.pricing-table {
  height: 920px;
}

@media (width >= 768px) {
  .pricing-table {
    height: auto;
  }
}

.light-text {
  color: #f0f4f8;
}

.transition {
  transition: all 0.1s ease-in;
}

.pulsating-circle {
  position: absolute;
  width: 10px;
  height: 10px;
}

.pulsating-circle::before {
  content: '';
  position: relative;
  display: block;
  width: 300%;
  height: 300%;
  box-sizing: border-box;
  margin-left: -100%;
  margin-top: -100%;
  border-radius: 45px;
  background-color: #9ae6b4;
  animation: pulse-ring 3s cubic-bezier(0.215, 0.61, 0.355, 1) infinite;
  @apply bg-green-500;
}

.pulsating-circle::after {
  content: '';
  position: absolute;
  left: 0;
  top: 0;
  display: block;
  width: 100%;
  height: 100%;
  background-color: white;
  border-radius: 15px;
  animation: pulse-dot 3s cubic-bezier(0.455, 0.03, 0.515, 0.955) -0.4s infinite;
  @apply bg-green-500;
}

@keyframes pulse-ring {
  0% {
    transform: scale(0.33);
  }

  50% {
    transform: scale(1);
  }

  40%,
  100% {
    opacity: 0;
  }
}

@keyframes pulse-dot {
  0% {
    transform: scale(0.8);
  }

  25% {
    transform: scale(1);
  }

  50%,
  100% {
    transform: scale(0.8);
  }
}

.just-text h1,
.just-text h2,
.just-text h3 {
  margin-top: 1em;
  margin-bottom: 0.5em;
}

.just-text p {
  margin-top: 0;
  margin-bottom: 1rem;
}

.dropdown-content::before {
  top: -16px;
  right: 8px;
  left: auto;
  border: 8px solid transparent;
  border-bottom-color: rgb(27 31 35 / 15%);
}

.dropdown-content::before,
.dropdown-content::after {
  position: absolute;
  display: inline-block;
  content: '';
}

.dropdown-content::after {
  top: -14px;
  right: 9px;
  left: auto;
  border: 7px solid transparent;
  border-bottom-color: #fff;
}

.feather {
  height: 1em;
  width: 1em;
  overflow: visible;
  display: inline;
}

.feather-sm {
  height: 1em;
  width: 1em;
  overflow: visible;
  display: inline;
}

.table-striped tbody tr:nth-child(odd) {
  background-color: var(--color-gray-100);
}

.dark .table-striped tbody tr:nth-child(odd) {
  background-color: var(--color-gray-800);
}

.dark .table-striped tbody tr:nth-child(even) {
  background-color: var(--color-gray-900);
}

.fade-enter {
  opacity: 0;
}

.fade-enter-active {
  opacity: 1;
  transition: opacity 100ms ease-in;
}

.datamaps-subunit {
  cursor: pointer;
}

.fullwidth-shadow::before {
  @apply absolute top-0 w-screen h-full bg-gray-50 dark:bg-gray-850;

  box-shadow: 0 4px 2px -2px rgb(0 0 0 / 6%);
  content: '';
  z-index: -1;
  left: calc(-1 * calc(50vw - 50%));
  background-color: inherit;
}

iframe[hidden] {
  display: none;
}

.pagination-link[disabled] {
  @apply cursor-default bg-gray-100 dark:bg-gray-300 pointer-events-none;
}

/* This class is used for styling embedded dashboards. Do not remove. */
/* stylelint-disable */
/* prettier-ignore */
.date-option-group { }
/* stylelint-enable */

.tooltip-arrow,
.tooltip-arrow::before {
  position: absolute;
  width: 10px;
  height: 10px;
  background: inherit;
}

.tooltip-arrow {
  visibility: hidden;
}

.tooltip-arrow::before {
  visibility: visible;
  content: '';
  transform: rotate(45deg) translateY(1px);
}
